package com.ejuornal.service;

import java.sql.Date;
import java.util.List;

import com.ejuornal.bean.Artical;
import com.ejuornal.bean.Page;

public interface ArticalService {
	/**
	 * 发表文章
	 * @param artical
	 */
	public void add(Artical artical);
	/**
	 * 修改一篇文章
	 * @author lyy
	 * @param articalId
	 */
	public void updateAtical(Artical artical);

	/**
	 * 发布文章时，修改发布时间、状态
	 * @param pubDate 发布时间
	 * @param status 状态
	 */
	public void check(int articalId, Date pubDate, String status);

	/**
	 * 修改文章，关联期刊号，是某一期的期刊
	 * @param artical
	 */
	public void updatePeriodicalId(int articalId, int periodicalId);
	
	/**
	 * 修改浏览次数
	 * @param viewCount
	 */
	public void updateViewCount(int articalId, int viewCount);
	
	/**
	 * 删除文章
	 * @param articalId
	 */
	public void delete(int... articalId);

	/**
	 * 根据ID号查询文章
	 * @param articalId 文章ID号
	 * @return
	 */
	public Artical findById(int articalId);

	/**
	 * Title:top
	 * Description:根据点击次数倒序获取文章前几条
	 * @param count 前几条
	 * @return 文章列表
	 * List<Artical>
	 */
	public List<Artical> findTop(int count);

	/**
	 * 查询某一期刊中某板块的文章
	 * @param current_recored 当前记录数
	 * @param url 地址
	 * @param boardId 板块ID号
	 * @param periodicalId 期刊ID号
	 * @param pubDate 本期期刊开始的日期
	 * @return 返回List<Artical>对象
	 */
	public List<Artical> findByBoardId(int boardId, int periodicalId, int perPeriodicalId);

	/**
	 * Title:findByCheck
	 * Description:通过文章状态查询文章列表
	 * @param status 文章状态
	 * @return 分页信息
	 * Page<Artical>
	 */
	public Page<Artical> findByStatus(int current_record, String url, String status);
	
	/**
	 * 查询所有数据
	 * @param current_recored 当前记录数
	 * @param url 地址
	 * @return 返回Page<Artical>对象
	 */
	public Page<Artical> findAll(int current_record, String url);
	/**
	 *  模糊 查找通过审核的文章
	 * @author lyy
	 * @param current_record
	 * @param url
	 * @param status
	 * @param title
	 * @return
	 */
	public Page<Artical> findByTitle(int current_record, String url, String status,String title);
	/**
	 * Title:findByName
	 * Description:根据名称模糊查询
	 * @param name
	 * @return
	 * List<Artical>
	 */
	public List<Artical> findByName(String name);

	/**
	 * 修改一文章的状态和执行这一动作的时间
	 * @author lyy
	 * @param date
	 * @param articalId
	 */
	public void updateStatus(String status,int articalId);
	/**
	 * 查询未审核  审核中  已审核
	 * @author lyy
	 * @param current_record
	 * @param url
	 * @param status
	 * @return
	 */
	public Page<Artical> checkByStatusEditor(int current_record, String url,int userIdEditor, String status);
	/**
	 * 查询  二审的文章
	 * @author lyy
	 * @param current_record
	 * @param url
	 * @param status
	 * @return
	 */
	public Page<Artical> checkByStatusCommit(int current_record, String url,int userIdCommit, String status);
	/**
	 * 查询 三审的文章
	 * @author lyy
	 * @param current_record
	 * @param url
	 * @param status
	 * @return
	 */
	public Page<Artical> checkByStatusChief(int current_record, String url,int userIdChief, String status);
	/**
	 * 第四审   审后通过就发表了
	 * @author lyy
	 * @param current_record
	 * @param url
	 * @param userIdChief
	 * @param status
	 * @return
	 */
	public Page<Artical> checkEditorLast(int current_record, String url,int userIdEditor, String status);
	
	/**
	 * 查询我的文章(通过和未通过的文章)
	 * @param current_record
	 * @param url
	 * @param userId
	 * @param status
	 * @return
	 */
	public Page<Artical> findMyArtical(int current_record, String url, int userId, String status);
	
	/**
	 * 查询我的文章（审核中的文章）
	 * @param current_record
	 * @param url
	 * @param userId
	 * @return
	 */
	public Page<Artical> findCheckingArtical(int current_record, String url, int userId);
	 public List<Artical> findByPerPeriodical(int id);
}
